<?php
namespace Tbf\Component\Html;

use Symfony\Component\CssSelector\CssSelector;

class HtmlFunction
{
    /**
     * 使用css选出第一个dom的innerHtml
     * 注意:
     * 1.如果该dom不存在,则返回false
     * 2.只返回第一个,其他被忽略
     * @param  string      $html      html内容
     * @param  string      $cssSelect css选择器内容
     * @return string|bool
     * */
    public static function selectFirstNodeInnerHtml($html,$cssSelect)
    {
        $node = self::selectFirstNode($html,$cssSelect);
        if (!$node) {
            return false;
        }

        return $node->nodeValue;
    }
    /**
     * 使用css选出node节点的列表
     * @param  string       $html      html内容
     * @param  string       $cssSelect css选择器内容
     * @return \DOMNodeList
     * */
    public static function selectNodeList($html,$cssSelect)
    {
        $dom = new \DOMDocument;
        libxml_use_internal_errors(true);
        $dom->loadHtml($html);
        $xpath = CssSelector::toXpath($cssSelect);
        $xpathObj = new \DOMXpath($dom);
        $nodeList = $xpathObj->query($xpath);

        return $nodeList;
    }
    /**
     * 使用css选出第一个node节点
     * 如果不存在返回false
     * @param  string   $html      html内容
     * @param  string   $cssSelect css选择器内容
     * @return \DOMNode
     * */
    public static function selectFirstNode($html,$cssSelect)
    {
        $nodeList = self::selectNodeList($html,$cssSelect);
        foreach ($nodeList as $node) {
            return $node;
        }

        return false;
    }
}
